#pragma once
#ifndef QUEUE_H
#define QUEUE_H

#include <string.h>
#include <stdlib.h>
#include <stdio.h>


#include "consts.h"

/* fd внутри pair нужен, чтобы знать какому сообщению соответсвует file descriptor.
В свою очередь это требуется для отслеживания и освобождения file descriptor, когда
админ удаляет запрос из очереди

fd непосредственно в queue нужен, чтобы отслеживать свободные file descriptor*/
typedef struct pair
{
    char str[MAX_SIZE];
    int fd;
}pair_t;

typedef struct queue
{
    pair_t queue[MAX_SIZE];
    int len;
    int fd[MAX_SIZE];
}queue_t;

void init_queue(queue_t *q);

void insert_queue(queue_t *q, char *str, int fd);

int is_empty_queue(const queue_t *q);

void remove_queue(queue_t *q, int fd);

int is_in_queue(queue_t *q, int fd);

#endif
